<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*函数表达式*/
    const fun1 = function () {
      console.log("fun1被调用了");
    }
    fun1()
    /*普通函数*/
    function fun2() {
      console.log("fun2被调用了");
    }
    fun2()
    /* 
    箭头函数 
      箭头函数属于表达式函数，因此不存在函数提升
      箭头函数只有一个形参时可以省略（）括号
      箭头函数的函数体只有一行代码时可以省略 {}括号
      加（）括号的函数体返回对象字面量表达式
      */
    const fun3 = () => {
      console.log("fun3被调用了");
    }
    fun3()

    const fun4 = (...args) => {
      //箭头函数没有arguments参数(普通函数才有)，箭头函数只有剩余参数
      console.log(args);
    }
    fun4(1, 2, 3, 4, 56, 7)

    /* 箭头函数的this */
    console.log(this);//window

    function fun5() {
      console.log(this);//window
    }
    fun5()

    const person={
      name:"陶品奇",
      getThis1(){
        console.log(this);//person对象(谁调用this指向谁)
        const count=()=>{
          console.log(this);//person对象(谁调用this指向谁)
        }
        count()
      },
      getThis2:()=>{
        console.log(this);//window(箭头函数没有this，它只会沿着自己的作用域的上一层沿用this)
      }
    }
    person.getThis1()
    person.getThis2()

  </script>
</body>

</html>